# @Time    :2025/3/28 23:40
""""
变量的作用域练习：
定义一个全局变量 global_var = 10，编写函数 modify_variable，
在函数内部尝试修改 global_var 的值（不使用 global 关键字），并打印修改后的值。
调用该函数后，再打印全局变量 global_var 的值，观察是否被修改。
然后在函数内部使用 global 关键字修改 global_var 的值，再次调用函数并打印全局变量的值，对比结果
"""
# global_var = 10
# def modify_variable():
#     global global_var
#     global_var=20
#     print("函数内的global_var：",global_var)#20
#     print("函数内声明global后的global_var：",global_var)#20
#
# modify_variable()
# print("函数外的global_var：",global_var)#10
# print("函数外声明global后的global_var：",global_var)#20

"""
在函数内部定义一个闭包函数，在闭包函数内部访问外部函数的变量，
并尝试修改该变量（注意闭包中变量的作用域规则），观察输出结果。
"""

# def func_a():
#     num1 = 19
#     def func_b():
#         print("n",num1)
#     return func_b
#
#
# fb = func_a()
# objs = fb.__closure__
# #print(objs)
# for cell in objs:
#     print("cell:",cell.cell_contents)


# 答案
def outer_function():
    outer_var = 10
    def inner_function():
        nonlocal outer_var
        outer_var = 20
        print("闭包内修改后的外部变量:", outer_var)
    inner_function()
    print("外部函数中的变量:", outer_var)

outer_function()
